import * as Cesium from 'cesium';

// 设置Cesium静态资源路径
window.CESIUM_BASE_URL = '/Cesium/';

export class CesiumManager {
  constructor(containerId) {
    this.containerId = containerId;
    this.viewer = null;
    this.modules = new Map();
  }

  init() {
    // 初始化Cesium Viewer
    this.viewer = new Cesium.Viewer(this.containerId, {
      // 可以在这里配置基础选项
      sceneModePicker: true, // 添加2D/3D切换控件
      timeline: false,
      animation: false
    });

    // 添加初始设置
    this.viewer.scene.globe.enableLighting = true;
    
    // 设置地图中心为湖南省长沙市，离地面200米
    this.viewer.camera.flyTo({
      destination: Cesium.Cartesian3.fromDegrees(112.98, 28.19, 200),
      duration: 0
    });

    return this.viewer;
  }

  // 注册模块
  registerModule(name, module) {
    if (typeof module.init === 'function') {
      module.init(this.viewer);
      this.modules.set(name, module);
    }
  }

  // 获取模块
  getModule(name) {
    return this.modules.get(name);
  }

  // 销毁模块
  unregisterModule(name) {
    const module = this.modules.get(name);
    if (module && typeof module.destroy === 'function') {
      module.destroy();
    }
    this.modules.delete(name);
  }
}

// 功能模块基类
export class BaseModule {
  constructor(name) {
    this.name = name;
  }

  init(viewer) {
    this.viewer = viewer;
  }

  destroy() {
    // 子类可以覆盖此方法来清理资源
  }
}